package cn.vehicle.mapper;

import cn.vehicle.domains.bo.QuerySnapshotBo;
import cn.vehicle.domains.entity.CameraSnapshotEntity;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 摄像头抓拍记录表Mapper接口
 * 处理摄像头抓拍记录的新增、查询、删除等操作
 */
public interface CameraSnapshotMapper {

    /**
     * 新增摄像头抓拍记录
     * @param snapshotEntity 抓拍记录实体（包含摄像头IP、抓拍时间、图片URL）
     * @return 影响行数（1：成功，0：失败）
     */
    int insertCameraSnapshot(CameraSnapshotEntity snapshotEntity);

    /**
     * 根据ID查询抓拍记录详情
     * @param id 抓拍记录ID
     * @return 抓拍记录实体（无数据则返回null）
     */
    CameraSnapshotEntity selectSnapshotById(Long id);


    /**
     * 查询指定摄像头的最新一条抓拍记录
     * @param cameraIp 摄像头IP地址
     * @return 最新的抓拍记录（无数据则返回null）
     */
    CameraSnapshotEntity selectLatestSnapshotByCameraIp(@Param("cameraIp") String cameraIp, @Param("time") Date time);

    /**
     * 批量删除指定时间之前的抓拍记录（用于清理过期数据）
     * @param time 过期时间阈值（删除此时间之前的记录）
     * @return 影响行数（删除的记录数）
     */
    int deleteSnapshotsBeforeTime(Date time);

    /**
     * 根据条件查询列表
     */
    List<CameraSnapshotEntity> queryBySnapshotBo(QuerySnapshotBo querySnapshotBo);

    /**
     * 根据id删除数据
     */
    void deleteById(Long id);
}